Non-volatile memories are commonly used in data processing systems. Electrically Erasable Programmable Read Only Memory (EEPROM) is one type of non-volatile memory which is commonly used. In this document, Electrically Erasable Programmable Read Only Memory, Electrically Erasable PROM, and EEPROM will all be used interchangeably to include all types of non-volatile memory that may be electrically erasable, including byte erasable, block erasable, bulk erasable, and flash memories, each of which may store any type of information.
Unfortunately, EEPROM which is electrically alterable by way of an on-chip charge pump circuit may be subject to being altered unintentionally. That is, one or more cells within the EEPROM array may be unintentionally and/or unknowingly altered. This unintentional altering may occur as a result of a brown-out condition or noise in a system. If the brown-out condition or noise causes the system to malfunction and enable the charge pump while addressing a portion of the EEPROM which is not meant to be altered, unintentional altering of the EEPROM may occur. For example, where an EEPROM is located on the same integrated circuit as a processor (e.g. a microcontroller), the microcontroller may malfunction due to low power or noise and may inadvertently enable the charge pump while addressing a portion of the EEPROM which is not meant to be altered.
Any unintentional altering of EEPROM may be completely unacceptable for some applications which use EEPROM. For example, smart card applications which use EEPROM to store the current amount of money available for use with the card may not be able to tolerate any unintentional altering of EEPROM. In some smart card applications, the unintentional altering of EEPROM may result in a significant loss of money to the bank or telephone company supplying the smart card.
There are several prior art approaches to providing erasing and programming protection to an EEPROM. For example, the MC68HC11E9 microcontroller, available from Motorola, Inc. of Austin, Tex., incorporates a type of EEPROM block protection which uses a one-time writeable register to protect the contents of certain address ranges within the on-board EEPROM. The problem with this approach is that it relies on the use of a volatile register to maintain the protection. Under conditions which can cause the processor to malfunction, this register's contents could also be corrupted. The MC68HC05B8 microcontroller, available from Motorola, Inc. of Austin, Tex., uses a similar form of protection which uploads protection information from a location in the EEPROM on reset. However, after reset, the information is still maintained in volatile register bits. The block protect location itself can be altered under normal circuit operation. In addition, at least one prior art microcontroller has a bit in the EEPROM that blocks further programming of the array. Unfortunately, however, this bit can be erased by a bulk erase of the array.
Due to the pressing requirements of some applications using EEPROM, an approach was needed that would even more significantly reduce the possibility of unintentionally altering the EEPROM.